package com.uls.hj.service;

import java.util.List;
import java.util.Map;

import com.uls.hj.domain.HjBookings;
import com.uls.hj.vo.TaskCommentVo;

/**
 * 预订Service接口
 * 
 * @author hj
 * @date 2024-11-09
 */
public interface IHjBookingsService 
{
    /**
     * 查询预订
     * 
     * @param bookingId 预订主键
     * @return 预订
     */
    public HjBookings selectHjBookingsByBookingId(Long bookingId);

    /**
     * 查询预订列表
     * 
     * @param hjBookings 预订
     * @return 预订集合
     */
    public List<HjBookings> selectHjBookingsList(HjBookings hjBookings);

    /**
     * 新增预订
     * 
     * @param hjBookings 预订
     * @return 结果
     */
    public int insertHjBookings(HjBookings hjBookings);

    /**
     * 修改预订
     * 
     * @param hjBookings 预订
     * @return 结果
     */
    public int updateHjBookings(HjBookings hjBookings);

    /**
     * 批量删除预订
     * 
     * @param bookingIds 需要删除的预订主键集合
     * @return 结果
     */
    public int deleteHjBookingsByBookingIds(Long[] bookingIds);

    /**
     * 删除预订信息
     * 
     * @param bookingId 预订主键
     * @return 结果
     */
    public int deleteHjBookingsByBookingId(Long bookingId);

    /**
     * 假删
     * @param params
     * @return
     */
    public int updateHjBookingsByBookingId(Map<String,Object> params);

    /**
     * 批量假删
     * @param params
     * @return
     */
    public int updateHjBookingsByBookingIds(Map<String,Object> params);


    /**
     * 启动流程
     * @param bookingId
     * @param userId
     */
    int submit(Long bookingId, Long userId);

    /**
     * 未完成的任务所对应的预约数据和各种条件查询
     * @param userId
     * @return
     */
    List<HjBookings> noFinishTask(Long userId,String processDefiniionKey,HjBookings booking);

    /**
     * 完成任务
     * @param flowInstantId
     */
    void completeTask(Long flowInstantId,Integer agree,Long userId,String comment,Long bookingId);

    /**
     * 根据流程id获取历史审批数据（task，comment）
     * @param flowInstantId
     * @return
     */
    List<TaskCommentVo> getTaskCommentList(Long flowInstantId);

    /**
     * 查询完成的任务，任务所对应的学生的数据和各种条件查询
     * @param userId
     * @param processDefiniionKey
     * @return
     */
    List<HjBookings> finishTask(Long userId,String processDefiniionKey,HjBookings bookings);



}
